Computing device and method for performing a secure neighbor discovery

ABSTRACT

Computing devices and method for performing a secure neighbor discovery. A local computing device transmits an encrypted local node identifier and an encrypted local challenge to a remote computing device. The remote computing device generates a local challenge response based on the local challenge; and transmits an encrypted remote node identifier and an encrypted local challenge response to the local computing device. The local computing device determines that the received local challenge response corresponds to an expected local challenge response generated based on the local challenge. The remote computing device further transmits an encrypted remote challenge. The local computing device generates a remote challenge response based on the remote challenge; and transmits an encrypted remote challenge response to the remote computing device. The remote computing device determines that the received remote challenge response corresponds to an expected remote challenge response generated based on the remote challenge.

TECHNICAL FIELD

The present disclosure relates to the field of data centers. Morespecifically, the present disclosure relates to a computing device andmethod for performing a network configuration of the computing device(located in a fabric of a data center) including performing a secureneighbor discovery.

BACKGROUND

Recent years have seen an increasing development of technologies such asSoftware as a Service (SaaS), cloud computing, etc. This development isfueled by a growing customer demand for products and services based onthese types of technologies. This development is also fueled by constantprogresses in underlying technologies, such as processing power increasefor microprocessors, storage capacity increase for storage devices, andtransmission capacity improvements for networking equipment.Furthermore, the average cost of these underlying technologies isfalling. However, the decrease in the average cost of the underlyingtechnologies is balanced by the increased customer demand, whichrequires to constantly update and upgrade the infrastructures used forproviding SaaS or cloud computing.

The infrastructure used for providing SaaS or cloud computing is a datacenter, which combines a very large number of computing servers. Eachserver has a plurality of multi-core processors, and the combination ofthe computing servers provides a very high processing capacity, which isused by customers of the data center. Some or all of the servers mayalso have important storage capacities, so that the combination of theservers also provides a very high storage capacity to the customers ofthe data center. The data center also relies on a networkinginfrastructure, for interconnecting the servers and providing access totheir computing and/or storage capacity to the customers of the datacenter. In order to provide a reliable service, very strong requirementsin terms of scalability, manageability, fault-tolerance, etc., areimposed on the computing and networking infrastructure of the datacenter.

With respect to the networking infrastructure of the data center, it iswell known that providing efficient and reliable networking services toa very large number of hosts is a complex task. Solutions andtechnologies have been developed in other contexts, such as networkingtechnologies for providing mobile data services to a very large numberof mobile devices. Some of these technologies have been standardized indedicated instances, such as the Internet Engineering Task Force (IETF®)or the 3rd Generation Partnership Project (3GPP™). However, at leastsome of the technological challenges of deploying an efficient andreliable networking infrastructure in a data center are specific to thedata center context; and need to be addressed with original solutionsand technologies.

One substantial challenge with respect to a networking infrastructureinvolving a large number (e.g. tens of thousands) of devices is theconfiguration of the networking infrastructure. In particular, theconfiguration needs to be flexible (to facilitate changes to an initialconfiguration), resiliant (to avoid that a localized configuration erroraffects operations of the whole data center) and secure (to preventattacks on the networking infrastructure). One way to ensure that thenetwork configuration is flexible and reliable is to limit as much aspossible human intervention in the configuration process. One way toensure that the network configuration is secure is to include securitychallenges in the network configuration.

Therefore, there is a need for a computing device and method forperforming a secure neighbor discovery by the computing device locatedin a fabric of a data center. There is also a need for a methodperforming a network configuration of the computing device including thegeneration of a fabric-wide IPv6 address, the execution of the secureneighbor discovery, and the generation of one or more link IPv6 address.

SUMMARY

According to a first aspect, the present disclosure relates to a firstcomputing device. The computing device comprises a communicationinterface and a processing unit. The processing unit determines a localnode identifier for the communication interface and generates a localchallenge. The processing unit encrypts the local node identifier intoan encrypted local node identifier and the local challenge into anencrypted local challenge. The processing unit transmits via thecommunication interface a discovery request message comprising theencrypted local node identifier and the encrypted local challenge. Theprocessing unit receives, from a remote computing device via thecommunication interface, a discovery response message comprising anencrypted remote node identifier and an encrypted local challengeresponse. The processing unit decrypts the encrypted local challengeresponse into a local challenge response. The processing unit generatesan expected local challenge response based at least on the localchallenge. The processing unit determines that the local challengeresponse corresponds to the expected local challenge response. Theprocessing unit decrypts the encrypted remote node identifier into aremote node identifier.

According to a second aspect, the present disclosure relates to a secondcomputing device. The computing device comprises a communicationinterface and a processing unit. The processing unit receives from aremote computing device via the communication interface a discoveryrequest message comprising an encrypted remote node identifier and anencrypted remote challenge. The processing unit decrypts the encryptedremote node identifier into a remote node identifier and the encryptedremote challenge into a remote challenge. The processing unit generatesa remote challenge response based at least on the remote challenge. Theprocessing unit determines a local node identifier for the communicationinterface and encrypts the local node identifier into an encrypted localnode identifier. The processing unit encrypts the remote challengeresponse into an encrypted remote challenge response. The processingunit transmits, to the remote computing device via the communicationinterface, a discovery response message comprising the encrypted localnode identifier and the encrypted remote challenge response.

According to a third aspect, the present disclosure relates to a methodfor performing a secure neighbor discovery in a fabric of a data center.The method comprises determining by a local processing unit of a localcomputing device a local node identifier for a communication interfaceof the local computing device. The method comprises generating by thelocal processing unit a local challenge. The method comprises encryptingby the local processing unit the local node identifier into an encryptedlocal node identifier and the local challenge into an encrypted localchallenge. The method comprises transmitting, via a communicationinterface of the local computing device, a discovery request messagecomprising the encrypted local node identifier and the encrypted localchallenge. The method comprises receiving via a communication interfaceof a remote computing device the discovery request message. The methodcomprises decrypting, by a remote processing unit of the remotecomputing device, the encrypted local node identifier into the localnode identifier and the encrypted local challenge into the localchallenge. The method comprises generating by the remote processing unita local challenge response based at least on the local challenge. Themethod comprises determining by the remote processing unit a remote nodeidentifier for a communication interface of the remote computing device.The method comprises encrypting by the remote processing unit the remotenode identifier into an encrypted remote node identifier and the localchallenge response into an encrypted local challenge response. Themethod comprises transmitting, to the local computing device via thecommunication interface of the remote computing device, a discoveryresponse message comprising the encrypted remote node identifier and theencrypted local challenge response. The method comprises receiving viathe communication interface of the local computing device the discoveryresponse message. The method comprises decrypting by the localprocessing unit the encrypted local challenge response into the localchallenge response. The method comprises generating by the localprocessing unit an expected local challenge response based at least onthe local challenge. The method comprises determining by the localprocessing unit that the local challenge response corresponds to theexpected local challenge response. The method comprises decrypting bythe local processing unit the encrypted remote node identifier into theremote node identifier.

In a particular aspect, the method further comprises generating by theremote processing unit a remote challenge and encrypting the remotechallenge into an encrypted remote challenge. The method furthercomprises transmitting the encrypted remote challenge into the discoveryresponse message. The method further comprises decrypting by the localprocessing unit the encrypted remote challenge into the remotechallenge. The method further comprises generating by the localprocessing unit a remote challenge response based at least on the remotechallenge; and encrypting the remote challenge response into anencrypted remote challenge response. The method further comprisestransmitting, to the remote computing device via the communicationinterface of the local computing device, a discovery acknowledgmentmessage comprising the encrypted remote challenge response. The methodfurther comprises receiving via the communication interface of theremote computing device the discovery acknowledgment message. The methodfurther comprises decrypting by the remote processing unit the encryptedremote challenge response into the remote challenge response. The methodfurther comprises generating by the remote processing unit an expectedremote challenge response based at least on the remote challenge. Themethod further comprises determining by the remote processing unit thatthe remote challenge response corresponds to the expected remotechallenge response.

According to a fourth aspect, the present disclosure relates to acomputing device. The computing device comprises a communicationinterface and a processing unit. The processing unit determines a localnode identifier for the communication interface. The processing unitgenerates a local challenge. The processing unit encrypts a combinationof the local node identifier and the local challenge into an encryptedcombination of the local node identifier and the local challenge. Theprocessing unit transmits via the communication interface a discoveryrequest message comprising the encrypted combination of the local nodeidentifier and the local challenge. The processing unit receives from aremote computing device via the communication interface a discoveryresponse message comprising an encrypted combination of a remote nodeidentifier and a local challenge response. The processing unit decryptsthe encrypted combination of the remote node identifier and the localchallenge response into the remote node identifier and the localchallenge response. The processing unit generates an expected localchallenge response based at least on the local challenge. The processingunit determines that the local challenge response corresponds to theexpected local challenge response.

According to a fifth aspect, the present disclosure relates to acomputing device. The computing device comprises a communicationinterface and a processing unit. The processing unit receives from aremote computing device via the communication interface a discoveryrequest message comprising an encrypted combination of a remote nodeidentifier and a remote challenge. The processing unit decrypts theencrypted combination of the remote node identifier and the remotechallenge into the remote node identifier and the remote challenge. Theprocessing unit generates a remote challenge response based at least onthe remote challenge. The processing unit determines a local nodeidentifier for the communication interface. The processing unit encryptsa combination of the local node identifier and the remote challengeresponse into an encrypted combination of the local node identifier andthe remote challenge response. The processing unit transmits to theremote computing device via the communication interface a discoveryresponse message comprising the encrypted combination of the local nodeidentifier and the remote challenge response.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments of the disclosure will be described by way of example onlywith reference to the accompanying drawings, in which:

FIG. 1 represents a network architecture of a data center comprising aplurality of pods and fabrics;

FIG. 2 represents a more detailed view of the fabrics represented inFIG. 1 ;

FIG. 3 represents communication ports of the equipment deployed in thepods and fabrics of FIGS. 1-2 ;

FIGS. 4A and 4B represent an IPv6 network for interconnecting equipmentof the fabrics represented in FIGS. 1-3 ;

FIG. 5 illustrates a schematic representation of a computing devicecorresponding to equipment deployed in the fabrics represented in FIGS.1-3 ;

FIG. 6 represents a method for generating a fabric-wide IPv6 address;

FIGS. 7A and 7B represent a method for generating a link IPv6 address;

FIGS. 8A and 8B illustrate the method of FIGS. 7A and 7B applied toequipment of the fabric of FIG. 3 ;

FIGS. 9A, 9B, 9C and 9D represent a method for performing a secureneighbor discovery;

FIG. 10 illustrates the method of FIGS. 9A-D applied to equipment of thefabric of FIG. 3 ; and

FIGS. 11A, 11B and 11C represent a method for performing a networkconfiguration by combining the methods of FIGS. 6, 9A-D and 7A-B.

DETAILED DESCRIPTION

The foregoing and other features will become more apparent upon readingof the following non-restrictive description of illustrative embodimentsthereof, given by way of example only with reference to the accompanyingdrawings.

Various aspects of the present disclosure generally address one or moreof the problems related to the execution of a secure neighbor discoveryby a computing device located in a fabric of a data center; where thesecure neighbor discovery is based on a security challenge. The presentdisclosure also addresses a network configuration of the computingdevice including the generation of a fabric-wide IPv6 address, theexecution of the secure neighbor discovery, and the generation of one ormore link IPv6 address.

Network Architecture of a Data Center

Referring now concurrently to FIGS. 1-4 , the network architecture of adata center is illustrated. The network architecture represented in thefigures is for illustration purposes, and a person skilled in the art ofdesigning data center architectures would readily understand that otherdesign choices could be made. The teachings of the present disclosureare not limited to the topology of the network architecture representedin the figures; but could also be applied to a network architecture withdifferent design choices in terms of topology.

Reference is now made more particularly to FIG. 1 . The data center isorganized into a plurality of pods. Each pod consists of an atomic unitof computing, storage, networking and power. Each pod is designed as aunit, deployed as a unit, automated as a unit, and retired as a unit.Several types of pods may be available, which differ by their design.Zero, one or more instances of each type of pod is deployed in the datacenter. For illustration purposes, three pods (A, B and C) have beenrepresented in FIG. 1 . However, the number of pods in the data centervaries from one to tens or even hundreds of pods. The capacity in termsof computing, storage, networking and power of the data center isscaled, by adding (or removing) pods.

Pod A comprises a plurality of servers 300 providing the processing andstorage power. The servers 300 are physically organized in one or moreracks, depending on the number of servers 300 and the capacity of eachrack. Pod A also comprises two hierarchical levels of networking powerreferred to as fabric A. Fabric A comprises a lower hierarchical levelconsisting of leaf networking equipment 200, and an upper hierarchicallevel consisting of spine networking equipment 100. The networkingequipment (e.g. spine 100 and leaf 200) of fabric A are physicallyintegrated to the one or more racks comprising the servers 300, oralternatively are physically organized in one or more independent racks.

The leaf networking equipment 200 and the spine networking equipment 100generally consist of switches, with a high density of communicationports. Therefore, in the rest of the description, the leaf networkingequipment 200 and the spine networking equipment 100 will berespectively referred to as leaf switches 200 and spine switches 100.However, other types of networking equipment may be used. For example,in an alternative implementation, at least some of the spine networkingequipment 100 consist of routers.

Each leaf switch 200 is connected to at least one spine switch 100, anda plurality of servers 300. The number of servers 300 connected to agiven leaf switch 200 depends on the number of communication ports ofthe leaf switch 200.

In the implementation represented in FIG. 1 , each server 300 isredundantly connected to two different leaf switches 200. A server 300of a given pod (e.g. pod A) is only connected to leaf switches 200 ofthe fabric (e.g. fabric A) belonging to the given pod (e.g. pod A). Aserver 300 of a given pod (e.g. pod A) is not connected to leaf switches200 of a fabric (e.g. fabric B) belonging to another pod (e.g. pod B).Each leaf switch 200 of a given fabric (e.g. fabric A) is connected toall the spine switches 100 of the given fabric (e.g. fabric A). A leafswitch 200 of a given fabric (e.g. fabric A) is not connected to a spineswitch 100 of another fabric (e.g. fabric B). In an alternativeimplementation not represented in the Figures, at least some of theservers 300 are connected to a single leaf switch 200.

Each spine switch 100 is connected to at least one core networkingequipment 10, and a plurality of leaf switches 200. The number of leafswitches 200 connected to a given spine switch 100 depends on designchoices and on the number of communication ports of the spine switch100. The core networking equipment 10 provide interworking between thefabrics deployed in the data center, connection to managementfunctionalities of the data center, connection to external networks suchas the Internet, etc. Furthermore, although not represented in theFigures for simplification purposes, at least some of the corenetworking equipment 10 may be connect to a pair of leaf switches 200.

The core networking equipment 10 generally consist of routers.Therefore, in the rest of the description, the core networking equipment10 will be referred to as core routers 10. However, other types ofnetworking equipment may be used. For example, in an alternativeimplementation, at least some of the core networking equipment 10consist of switches.

In the implementation represented in FIG. 1 , each spine switch 100 of agiven fabric (e.g. fabric A) is connected to all the core routers 10,and is connected to all the leaf switches 200 of the given fabric (e.g.fabric A).

For simplification purposes, fabric A represented in FIG. 1 onlycomprises two spine switches 100 and four leaf switches 200, while pod Aonly comprises two groups of three servers 300 respectively connected toleaf switches 200 of the fabric A. However, the number of spine switches100 and leaf switches 200 of a fabric may vary, based on design choicesand networking capabilities (e.g. communication port density) of thespine and leaf switches. Similarly, the total number of servers 300 of apod may vary, based on design choices, based on the number of leafswitches 200 of the corresponding fabric, and based on networkingcapabilities (e.g. communication port density) of the leaf switches.

The details of pod B and its corresponding fabric B, as well as pod Cand its corresponding fabric C, are not represented in FIG. 1 forsimplification purposes. However, pod B/fabric B and pod C/fabric Cinclude a hierarchy of spine switches 100, leaf switches 200 and servers300 similar to the hierarchy illustrated for pod A/fabric A.

Reference is now made more particularly to FIGS. 1 and 2 , where FIG. 2represents an implementation of the data center of FIG. 1 , where eachfabric further includes one or more controllers 400. The servers 300have not been represented in FIG. 2 for simplification purposes only.

The controllers 400 of a fabric are responsible for controllingoperations of at least some of the nodes (e.g. leaf switches 200 and/orspine switches 100) included in the fabric. Each controller 400 isconnected to at least one leaf switch 200. The number of controllers 400deployed in a given fabric depends on design choices, on the requiredcumulative processing power of the controllers 400 deployed in thefabric, on the total number of leaf and spine switches deployed in thefabric, etc.

In the implementation represented in FIG. 2 , each controller 400 isredundantly connected to two different leaf switches 200. For example,each controller 400 has a first operational connection to a first leafswitch 200, and a second backup connection to a second leaf switch 200.A controller 400 of a given fabric (e.g. fabric A) is only connected toleaf switches 200 of the fabric (e.g. fabric A). A controller 400 of agiven fabric (e.g. fabric A) is not connected to leaf switches 200 ofanother fabric (e.g. fabric B or C). Some leaf switches 200 arededicated to being connected to controllers 400 (as illustrated in FIG.2 ), while other leaf switches 200 are dedicated to being connected toservers 300 (as illustrated in FIG. 1 ). In an alternativeimplementation, a leaf switch 200 is concurrently connected to servers300 and controllers 400.

In another implementation, the controllers 400 are not directlyphysically connected to the leaf switches 200; but are functionallyconnected via at least one intermediate equipment such as anintermediate switch (not represented in FIG. 2 ) between the controllers400 and the leaf switches 200.

Reference is now made more particularly to FIGS. 1, 2 and 3 , where FIG.3 represents communication ports of the equipment deployed in afabric/pod.

The spine switches 100 have a dedicated number of uplink communicationports (e.g. 4 represented in FIG. 3 ) dedicated to the interconnectionwith the core routers 10, and a dedicated number of downlinkcommunication ports (e.g. 6 represented in FIG. 3 ) dedicated to theinterconnection with the leaf switches 200. The uplink and downlinkports have the same or different networking capabilities. For example,all the ports have a capacity of 10 Gigabytes (Gbps).

The leaf switches 200 have a dedicated number of uplink communicationports (e.g. 3 represented in FIG. 3 ) dedicated to the interconnectionwith the spine switches 100, and a dedicated number of downlinkcommunication ports (e.g. 6 represented in FIG. 3 ) dedicated to theinterconnection with the servers 300 or controllers 400. The uplink anddownlink ports have the same or different networking capabilities. Forexample, all the uplink ports have a capacity of 100 Gbps and all thedownlink ports have a capacity of 25 Gbps. In the future, the capacityof the uplink ports will reach 200 or 400 Gbps, while the capacity ofthe downlink ports will reach 50 Gbps or 100 Gbps.

The leaf and spine switches generally consist of equipment with a highdensity of communication ports, which can reach a few dozens of ports.Some of the ports may be electrical ports, while others are fiber opticports. As mentioned previously, the ports of a switch may have varyingnetworking capabilities in terms of supported bandwidth. Switches withdifferent networking capabilities and functionalities are generally usedfor implementing the leaf switches and the spine switches. The ports arenot limited to communication ports, but also include enclosures forconnecting various types of pluggable media.

By contrast, the servers 300 and controllers 400 are computing devicessimilar to traditional computers, with a limited number of communicationports. For example, each server 300 and each controller 400 comprisestwo communication ports, respectively connected to two different leafswitches 200. The two communication ports generally consist of Ethernetports, with a capacity of for example 10 Gbps. However, the servers 300and/or controllers 400 may include additional port(s).

All the aforementioned communication ports are bidirectional, allowingtransmission and reception of data.

Reference is now made more particularly to FIGS. 4A and 4B, whichrepresent the deployment of an IPv6 network 20 at the fabric level.

At least some of the equipment of the fabric are connected to the IPv6network 20 and exchange data via this IPv6 network. In the configurationillustrated in FIGS. 4A and 4B, all the spine switches 100, leafswitches 200 and controllers 400 are connected to the IPv6 network 20.Each fabric (e.g. fabrics A, B and C as illustrated in FIG. 1 ) has itsown IPv6 network, with a dedicated IPv6 prefix for each fabric. Thegeneration of the dedicated IPv6 prefix of a given fabric will beillustrated later in the description.

Optionally, additional equipment are connected to the IPv6 network 20.For example, one or more of the core routers 10 are connected to theIPv6 network 20, as illustrated in FIGS. 4A and 4B. Configuration and/ormanagement servers (not represented in FIGS. 4A and 4B forsimplification purposes) have access to the IPv6 network 20 through thecore router 10.

Optionally, a dedicated switch and/or router (not represented in FIGS.4A and 4B for simplification purposes) is used for interconnecting theequipment of the fabric A which exchange data via the IPv6 network 20.The aforementioned optional configuration and/or management servers haveaccess to the IPv6 network 20 through the dedicated switch and/orrouter.

FIG. 4A represents a first illustrative configuration where eachequipment of the fabric A (spine switch 100, leaf switch 200 andcontroller 400) has a dedicated port 21 for accessing the IPv6 network20. The IPv6 network 20 is a configuration and/or management networkisolated from the other IP networks implemented by the fabric A. Thededicated ports 21 of the spine switches 100, leaf switches 200 andcontrollers 400 are only used to exchange data through the IPv6 network20. Thus, the IPv6 traffic exchanged via the dedicated ports 21 of thespine switches 100, leaf switches 200 and controllers 400 is isolatedfrom the traffic exchanged via the other ports of the spine switches100, leaf switches 200 and controllers 400 (illustrated in FIG. 3 ).

FIG. 4B represents a second illustrative configuration where eachequipment of the fabric A (spine switch 100, leaf switch 200 andcontroller 400) does not use a dedicated port for accessing the IPv6network 20. On the contrary, a port already used for exchanging otherdata traffic (illustrated in FIG. 3 ) is also used for accessing theIPv6 network 20.

This configuration has the advantage of not monopolizing a dedicatedport at each equipment of the fabric A (spine switch 100, leaf switch200 and controller 400) solely for accessing the IPv6 network 20.

In an alternative configuration not represented in the Figures, some ofthe equipment of the fabric A are using a dedicated port for accessingthe IPv6 network 20; while other equipment of the fabric A access theIPv6 network 20 through a port also used for exchanging other datatraffic.

Furthermore, some of the equipment of the fabric A may use more than oneport for accessing the IPv6 network 20.

Referring now concurrently to FIGS. 4A-B and 5, a computing device 500is illustrated in FIG. 5 . The computing device 500 is a genericfunctional representation of the devices comprised in the fabric ofFIGS. 4A and 4B. Thus, the computing device 500 represents a spineswitch 100, a leaf switch 200 or a controller 400.

The computing device 500 comprises a processing unit 510, memory 520,and at least one communication interface 530. The computing device 500may comprise additional components (not represented in FIG. 5 forsimplification purposes). For example, in the case where the computingdevice 500 represents a controller 400, the computing device may includea user interface and/or a display.

The processing unit 510 comprises one or more processors (notrepresented in FIG. 5 ) capable of executing instructions of a computerprogram. Each processor may further comprise one or several cores. Inthe case where the computing device 500 represents a switch 100 or 200,the processing unit 510 further includes one or more dedicatedprocessing components (e.g. a network processor, an Application SpecificIntegrated Circuits (ASIC), etc.) for performing specialized networkingfunctions (e.g. packet forwarding).

The memory 520 stores instructions of computer program(s) executed bythe processing unit 510, data generated by the execution of the computerprogram(s) by the processing unit 510, data received via thecommunication interface(s) 530, etc. Only a single memory 520 isrepresented in FIG. 5 , but the computing device 500 may compriseseveral types of memories, including volatile memory (such as RandomAccess Memory (RAM)) and non-volatile memory (such as a hard drive,Erasable Programmable Read-Only Memory (EPROM), Electrically-ErasableProgrammable Read-Only Memory (EEPROM), etc.).

Each communication interface 530 allows the computing device 500 toexchange data with other devices. At least some of the communicationinterfaces 530 (only two are represented in FIG. 5 for simplificationpurposes) correspond to the ports of the spine switches 100, leafswitches 200, and controller 400 represented in FIGS. 4A and 4B.Examples of communication interfaces 530 include standard (electrical)Ethernet ports, fiber optic ports, ports adapted for receiving SmallForm-factor Pluggable (SFP) units, etc. The communication interfaces 530are generally of the wireline type; but may also include some wirelessones (e.g. a Wi-Fi interface). The communication interface 530 comprisesa combination of hardware and software executed by the hardware, forimplementing the communication functionalities of the communicationinterface 530. Alternatively, the combination of hardware and softwarefor implementing the communication functionalities of the communicationinterface 530 is at least partially included in the processing unit 510.

Fabric-Wide IPv6 Address

Referring now concurrently to FIGS. 4A-B, 5 and 6, a method 600 forgenerating a fabric-wide IPv6 address is illustrated in FIG. 6 . Atleast some of the steps of the method 600 are performed by the computingdevice 500 represented in FIG. 5 .

A dedicated computer program has instructions for implementing at leastsome of the steps of the method 600. The instructions are comprised in anon-transitory computer program product (e.g. the memory 520) of thecomputing device 500. The instructions, when executed by the processingunit 510 of the computing device 500, provide for generating afabric-wide IPv6 address. The instructions are deliverable to thecomputing device 500 via an electronically-readable media such as astorage media (e.g. CD-ROM, USB key, etc.), or via communication links(e.g. via a communication network through one of the communicationinterfaces 530).

The method 600 comprises the step 605 of transmitting configuration databy a configuration device 30 to the computing device 500.

The method 600 comprises the step 610 of receiving the configurationdata by the computing device 500. The configuration data are receivedvia one of the communication interfaces 530 of the computing device 500.

The method 600 comprises the step 615 of storing the configuration datain a configuration file 521. The configuration file 521 is stored in thememory 520 of the computing device 500. The configuration data comprisean IPv6 base prefix and a fabric identifier, which will be furtherdetailed in the following steps of the method 600.

The details of the generation and transmission of the configuration databy the configuration device 30 are out of the scope of the presentdisclosure. A single configuration device 30 is used at the data centerlevel for transmitting the configuration data to the computing devices500 in each of the fabrics. Alternatively, a dedicated configurationdevice 30 is used for each of the fabrics of the data center. A personskilled in the art designing data center architectures would readilyidentify adequate networking protocols and configuration mechanisms fordistributing the configuration data from a centralized configurationdevice 30 to the plurality of computing devices 500 of the fabrics.

Steps 605 and 610 are performed at the initiative of the configurationdevice 30 (push of the configuration data) or at the initiative of thecomputing device 500 (pull of the configuration data). In the case of apull, an additional step comprising a request of the configuration datafrom the computing device 500 to the configuration device 30 is notrepresented in FIG. 6 for simplification purposes.

Steps 605 and 610 may occur when the computing device 500 is initiallydeployed in the fabric. In this case, the computing device 500 is notconnected at all (or only partially connected) to any networkinginfrastructure of the data center. Thus, the configuration data aredirectly transmitted from the configuration device 30 to the computingdevice 500 using a basic bootstrap protocol. For instance, acommunication interface of the configuration device 30 is physicallyconnected (e.g. via an Ethernet cable) to a communication interface ofthe computing device 500, and the bootstrap protocol operates on thistemporary physical connection for performing the transfer of theconfiguration data.

The method 600 comprises the step 620 of determining a host identifierand optionally storing the host identifier in the configuration file521. Step 620 is executed by the processing unit 510 of the computingdevice 500.

The storage of the host identifier in the configuration file 521 isoptional. Alternatively, the host identifier is simply used at othersteps of the method 600, without requiring storage of the hostidentifier in a configuration file. However, it may be more efficient todetermine the host identifier only once (for instance if thedetermination implies calculations), and store it in the configurationfile 521, so that it can be used whenever needed without the need tocalculate it again.

Thus, the determination of the host identifier comprises one of thefollowing: selecting the host identifier, calculating the hostidentifier and reading the host identifier from the configuration file521.

In a first implementation, the host identifier is a selected 48 bitsinteger in hexadecimal format. For example, the host identifier is aMedia Access Control (MAC) address. If at least one of the communicationinterfaces 530 of the computing device 500 has a Media Access Control(MAC) address, then the processing unit 510 selects the MAC address ofone of the communication interfaces 530 as the host identifier. Sincethe IPv6 address generated by the method 600 is not associated to aspecific communication interface 530 among all the communicationinterfaces 530 of the computing device 500, any one of the MAC addressesallocated to the computing device 500 can be selected for being the hostidentifier. For instance, the selected MAC address is the MAC address ofthe communication interface 530 used for receiving the configurationdata at step 610. Equipment such as the switches (spine 100 and/or leaf200) generally have a dedicated management interface, which is used forperforming step 610. The MAC address of the management interface is usedfor the host identifier.

In a second implementation, the host identifier is determined bycalculating a hash of a 128 bits Universal Unique Identifier (UUID) ofthe computing device 500. For example, the hash of the 128 bits UUID isalso a 48 bits integer in hexadecimal format. UUIDs are well known inthe art. A UUID is calculated for a given computing device based onvarious methods (e.g. randomly, using a combination of a MAC address anda timestamp, etc.). The chances of the UUID of a given computing devicebeing identical to the UUID of another device are very low.

The timing for performing step 620 may vary. For example, step 620 isperformed before step 610 or after step 625.

The host identifier is not necessarily based on either a MAC address oran UUID. Alternatively, it is calculated based on other seed data, aslong as it is unique (or at least has a very high probability of beingunique).

The method 600 comprises the step 625 of generating an IPv6 prefix bycombining the IPv6 base prefix stored in the configuration file 521 andthe fabric identifier stored in the configuration file 521. As mentionedpreviously, the IPv6 base prefix and the fabric identifier are comprisedin the configuration data received at step 610.

An IPv6 address is composed of 128 bits, with the first n bitsconsisting of the subnet prefix. It is common practice in IPv6networking to reserve the 64 first bits of the IPv6 address for thesubnet prefix (/64 prefix).

The IPv6 prefix generated at step 625 has a length of N bits (generally64). The IPv6 base prefix stored in the configuration file 521 is anIPv6 prefix with a length of B bits (e.g. 48) lower than N. The fabricidentifier stored in the configuration file 521 has a length of I bits.For example, the fabric identifier is a 16 bits integer. Each fabric(e.g. fabric A, fabric B and fabric C in FIG. 1 ) in the data center hasa unique fabric identifier, different from the fabric identifiers of theother fabrics in the data center.

The following relationship applies: B+I<=N.

In an exemplary implementation, the IPv6 prefix is generated as follows:the fabric identifier is directly appended to the IPv6 base prefix. Forinstance, the IPv6 base prefix is FD10:0:0/48, the fabric identifier isa 16 bits integer <fabric_id>, and the generated IPv6 prefix isFD10:0:0:<fabric_id>::/64.

In another exemplary implementation, the IPv6 prefix is generated asfollows. The IPv6 prefix begins with the IPv6 base prefix followed byzeros and terminates with the fabric identifier. For instance, the IPv6base prefix is FD10::/16, the fabric identifier is a 16 bits integer<fabric_id>, and the generated IPv6 prefix is FD10:0:0:<fabric_id>::/64.In this case, the optional zeros consist of bits 17 to 48 of the IPv6prefix.

In still another exemplary implementation, the IPv6 prefix is generatedas follows. The IPv6 prefix begins with the IPv6 base prefix followed bythe fabric identifier and terminates with zeros. For instance, the IPv6base prefix is FD10::/16, the fabric identifier is a 16 bits integer<fabric_id>, and the generated IPv6 prefix is FD10:<fabric_id>:0:0::/64.In this case, the optional zeros consist of bits 33 to 64 of the IPv6prefix.

A person skilled in the art of designing data center architectures wouldreadily understand that other combinations of the IPv6 base prefix andfabric identifier may be used for generating the IPv6 prefix.

In an exemplary implementation of the method 600, the generated IPv6prefix is a unique local address (ULA) IPv6 prefix or a public IPv6prefix.

The method 600 comprises the step 630 of generating an IPv6 address bycombining the IPv6 prefix (generated at step 625) and the hostidentifier (determined at step 620). This operation is well known in theart of IPv6 networking. For example, if the IPv6 prefix is atraditional/64 prefix, then the last 64 bits of the IPv6 address aregenerated with the host identifier. If the host identifier has less than64 bits, zeros are appended before (or after) the host identifier toreach 64 bits.

For example, the IPv6 base prefix is a 48 bits prefix <base_prefix>(e.g. FD10:0:0/48), the fabric identifier is a 16 bits integer<fabric_id>, and the host identifier is a 48 bits integer <host_id>. Thegenerated IPv6 address is: <base_prefix>:<fabric_id>:0:<host_id>.

The method 600 comprises the step 635 of advertising the IPv6 addressgenerated at step 630. This operation is also well known in the art ofIPv6 networking and relies on various layer 2 and/or layer 3communication protocols. The advertising is made on one or more of thecommunication interfaces 530 of the computing device 500. For example,in the case of a spine switch 100, the IPv6 address is advertised on allthe communication ports of the spine switch 100, only on a dedicatedmanagement port of the spine switch 100, only on the ports of the spineswitch 100 connected to a leaf switch 200, etc. Similarly, in the caseof a leaf switch 200, the IPv6 address is advertised on all thecommunication ports of the leaf switch 200, only on a dedicatedmanagement port of the leaf switch 200, only on the ports of the leafswitch 200 connected to a spine switch 100 or a controller 400, etc.

Once step 630 is completed, the computing device 500 is capable oftransmitting data over the IPv6 network 20 to other computing devices.The IPv6 address generated at step 630 is used as the source IPv6address of the IPv6 packets transmitted to the other computing devices.For example, a controller 400 transmits data to a leaf switch 200 or aspine switch 100 over the IPv6 network 20.

Once step 635 is completed, the computing device 500 is capable ofreceiving data over the IPv6 network 20 from other computing deviceswhich have received the advertised IPv6 address. The IPv6 addressadvertised at step 635 is used as the destination IPv6 address of theIPv6 packets received from the other computing devices. For example, acontroller 400 receives data from a leaf switch 200 or a spine switch100 over the IPv6 network 20.

Steps 625, 630 and 635 of the method 600 may be repeated several times,based on the information stored in the configuration file 521. Bycontrast, steps 605 to 620 only need to be performed once, forgenerating and storing the data required by steps 625 and 630. Forinstance, steps 625, 630 and 635 are repeated at each boot of thecomputing device 500; and steps 605 to 620 are only performed at thefirst boot of the computing device 500 (as long as computing device 500remains located in the same fabric).

Furthermore, the configuration file may comprise several IPv6 baseprefixes. Steps 625, 630 and 635 of the method 600 are repeated forconfiguring (at step 630) several IPv6 addresses respectively based onone among the several IPv6 base prefixes. This enables the computingdevice 500 to be part of several IPv6 networks.

Link IPv6 Address

Referring now concurrently to FIGS. 3, 5, 7A and 7B, a method 700 forgenerating a link IPv6 address for one of the communication interfaces530 of the computing device 500 is illustrated in FIGS. 7A and 7B. Atleast some of the steps of the method 700 are performed by the computingdevice 500 represented in FIG. 5 .

A dedicated computer program has instructions for implementing at leastsome of the steps of the method 700. The instructions are comprised in anon-transitory computer program product (e.g. the memory 520) of thecomputing device 500. The instructions, when executed by the processingunit 510 of the computing device 500, provide for generating a link IPv6address. The instructions are deliverable to the computing device 500via an electronically-readable media such as a storage media (e.g.CD-ROM, USB key, etc.), or via communication links (e.g. via acommunication network through one of the communication interfaces 530).

The communication interface 530 of the computing device 500 beingconfigured with the link IPv6 address by the method 700 is connected toa communication interface of a remote computing device 40. Theconnection (e.g. physical connection via an Ethernet cable) establishesa communication link between the computing device 500 and the remotecomputing device 40.

The method 700 is based on node identifiers and link identifiers. Thenode identifier and the link identifier associated to the communicationinterface 530 of the computing device 500 will be referred to as thelocal node identifier and the local link identifier. The node identifierand the link identifier associated to the communication interface of theremote computing device 40 will be referred to as the remote nodeidentifier and the remote link identifier.

The method 700 comprises the step 705 of transmitting configuration databy a configuration device 30 to the computing device 500.

The method 700 comprises the step 710 of receiving the configurationdata by the computing device 500. The configuration data are receivedvia one of the communication interfaces 530 of the computing device 500.

The method 700 comprises the step 715 of storing the configuration datain the configuration file 521. The configuration data comprise an IPv6base prefix, which will be further detailed in the following steps ofthe method 700. For example, the IPv6 base prefix is a /16 prefix.

Steps 705, 710 and 715 are similar to steps 605, 610 and 615 of themethod 600 represented in FIG. 6 . As mentioned previously with respectto the method 600 represented in FIG. 6 , the details of the generationand transmission of the configuration data by the configuration device30 are out of the scope of the present disclosure.

The method 700 comprises the step 720 of determining a local nodeidentifier for the communication interface 530 of the computing device500. Optionally, step 720 also comprises storing the local nodeidentifier in the configuration file 521. Step 720 is executed by theprocessing unit 510 of the computing device 500.

The storage of the local node identifier in the configuration file 521is optional. Alternatively, the local node identifier is simply used atother steps of the method 700, without requiring storage of the localnode identifier in a configuration file. However, it may be moreefficient to determine the local node identifier only once (for instanceif the determination implies calculations), and store it in theconfiguration file 521, so that it is used whenever needed without theneed to calculate it again.

Thus, the determination of the local node identifier comprises one ofthe following: selecting the local node identifier, calculating thelocal node identifier and reading the local node identifier from theconfiguration file 521.

The same local node identifier is used when performing the method 700for generating a link IPv6 address for any of the communicationinterfaces 530 of the computing device 500. Alternatively, differentlocal node identifiers are determined at step 720, each one of thedifferent local node identifiers being associated to one or morecommunication interfaces 530 among the plurality of communicationinterfaces 530 of the computing device 500.

In a first implementation, the local node identifier is a selected 48bits integer in hexadecimal format. For example, the local nodeidentifier is a Media Access Control (MAC) address. If the communicationinterfaces 530 of the computing device 500 being currently configuredwith the method 700 has a MAC address, then the processing unit 510selects the MAC address of this communication interfaces 530 as thelocal node identifier. If the communication interfaces 530 of thecomputing device 500 being currently configured with the method 700 doesnot have its own MAC address, then the MAC address of anothercommunication interface 530 is selected for the local node identifier.For example, equipment such as the switches (spine 100 and/or leaf 200)generally have a dedicated management interface with a MAC address whichcan be used for the local node identifier.

In a second implementation, the local node identifier is determined bycalculating a hash of a 128 bits Universal Unique Identifier (UUID) ofthe computing device 500. For example, the hash of the 128 bits UUID isalso a 48 bits integer in hexadecimal format. UUIDs are well known inthe art. A UUID is calculated for a given computing device based onvarious methods (e.g. randomly, using a combination of a MAC address anda timestamp, etc.). The chances of the UUID of a given computing devicebeing identical to the UUID of another device are very low.

The timing for performing step 720 may vary. Step 720 only needs to beperformed before step 740

The local node identifier is not necessarily based on either a MACaddress or an UUID. Alternatively, it is calculated based on other seeddata, as long as it is unique (or at least has a very high probabilityof being unique).

The method 700 comprises the step 725 of determining a local linkidentifier for the communication interface 530 of the computing device500. The local link identifier is associated to the communicationinterface 530 for which the link IPv6 address is generated by the method700. Optionally, step 725 also comprises storing the local linkidentifier in the configuration file 521. Step 725 is executed by theprocessing unit 510 of the computing device 500.

The storage of the local link identifier in the configuration file 521is optional. Alternatively, the local link identifier is simply used atother steps of the method 700, without requiring storage of the locallink identifier in a configuration file. However, it may be moreefficient to determine the local link identifier only once (for instanceif the determination implies calculations), and store it in theconfiguration file 521, so that it can be used whenever needed withoutthe need to calculate it again.

Thus, the determination of the local link identifier comprises one ofthe following: selecting the local link identifier, calculating thelocal link identifier and reading the local link identifier from theconfiguration file 521.

Each one of the communication interfaces 530 of the computing device 500has its own local link identifier, which is different from the locallink identifiers of the other communication interfaces 530.

For example, the local link identifier is a 15 bits integer inhexadecimal format. In the case of a spine switch 100 or a leaf switch200, each port of the switch is allocated a unique integer in the range1 to N, where N is the number of ports of the switch. The unique integerallocated to a given port is used for the local link identifier.

The determination of the local link identifier is not limited to theallocation of a unique integer in a given range of integers (e.g. 1 toN). Other techniques or algorithms can be used for determining uniquelocal link identifiers respectively associated to the communicationinterfaces 530 of the computing device 500.

The method 700 comprises the step 730 of transmitting the remote nodeidentifier and the remote link identifier by the remote computing device40 to the computing device 500.

The method 700 comprises the step 735 of receiving the remote nodeidentifier and the remote link identifier by the computing device 500.The remote node identifier and the remote link identifier are receivedvia the communication interfaces 530 of the computing device 500 beingcurrently configured with the link IPv6 address by the method 700.

For example, the remote node identifier and the remote link identifierare transmitted from the remote computing device 40 to the computingdevice 500 through the Link Layer Discovery Protocol (LLDP). However,other protocols than LLDP may be used for this purpose.

Optionally, the remote node identifier and the remote link identifierare also stored in the configuration file 521.

The remote node identifier and the local node identifier have the samesize in bits. For example, if the local node identifier is a 48 bitsinteger in hexadecimal format, then the remote node identifier is also a48 bits integer in hexadecimal format. Similarly, the remote linkidentifier and the local link identifier have the same size in bits. Forexample, if the local link identifier is a 15 bits integer inhexadecimal format, then the remote link identifier is also a 15 bitsinteger in hexadecimal format.

The method 700 comprises the step 740 of comparing the local nodeidentifier and the remote node identifier. For example, the local andremote node identifiers are interpreted as integers, which are comparedfor determining which one of the two is greater than the other one.

If the local node identifier is greater than the remote node identifier,the method 700 performs step 745 of generating the link IPv6 address bycombining the IPv6 base prefix stored in the configuration file 521, thelocal node identifier, the remote node identifier, the local linkidentifier and an indicator that the local node identifier is greaterthan the remote node identifier.

If the local node identifier is lower than the remote node identifier,the method 700 performs step 746 of generating the link IPv6 address bycombining the IPv6 base prefix stored in the configuration file 521, theremote node identifier, the local node identifier, the remote linkidentifier and an indicator that the local node identifier is lower thanthe remote node identifier.

For example, the indicator is a Boolean which takes the value 0 if thelocal node identifier is greater than the remote node identifier, andthe value 1 if the local node identifier is lower than the remote nodeidentifier. Alternatively, the Boolean indicator could take the value 1if the local node identifier is greater than the remote node identifier,and the value 0 if the local node identifier is lower than the remotenode identifier.

The method 700 comprises the step 750 of configuring the communicationinterface 530 with the link IPv6 address generated at step 745 or 746.The configuration of a communication interface with an IPv6 address iswell known in the art of IPv6 networking.

Once step 750 is completed, the computing device 500 is capable ofexchanging data with the remote computing device 40 through thecommunication interface configured with the link IPv6 address at step750. The link IPv6 address generated at step 745 or 746 is used as thesource IPv6 address of the IPv6 packets transmitted to the remotecomputing device 40. The link IPv6 address generated at step 745 or 746is used as the destination IPv6 address of the IPv6 packets receivedfrom the remote computing device 40. In order to start exchanging data,the remote computing device 40 needs to have also executed the method700 for configuring a corresponding link IPv6 address on a correspondingcommunication interface of the remote computing device 40. As will bedescribed later in relation to FIGS. 8A and 8B, the computing device 500is capable of inferring the corresponding link IPv6 address of theremote computing device 40 based on its own link IPv6 address.Similarly, the remote computing device 40 is capable of inferring thecorresponding link IPv6 address of the computing device 500 based on itsown link IPv6 address.

The computing device 500 may also exchange data with other computingdevices (different from computing device 40) via the communicationinterface configured at step 750. The link IPv6 address generated atstep 745 or 746 is used as the source IPv6 address of outgoing IPv6packets and as the destination IPv6 address of incoming IPv6 packets.

In an alternative implementation, step 745 is performed if the localnode identifier is lower than the remote node identifier; and step 746is performed if the local node identifier is greater than the remotenode identifier. This alternative implementation is not represented inthe Figures.

An IPv6 address is composed of 128 bits, with the first n bits generallyconsisting of the subnet prefix. It is common practice in IPv6networking to reserve the 64 first bits of the IPv6 address for thesubnet prefix (/64 prefix). However, the generation of the link IPv6address by the method 700 does not follow this common practice.

The IPv6 base prefix stored in the configuration file 521 is an IPv6prefix <base_prefix> with a length of B bits (e.g. 16 bits). The localand remote node identifiers (respectively <local_node_id> and<remote_node_id>) have a length of N bits (e.g. 48 bits). The local andremote link identifiers (respectively <local_link_id> and<remote_link_id>) have a length of L bits (e.g. 15 bits). The indicatorhas a length of I bits (e.g. 1 bit).

The following relationship applies: B+2*N+L+I=128.

The link IPv6 address generated by the method 700 has the followingformat:

-   -   <base_prefix>:<local_node_id>:<remote_node_id>:<local_link_id>:<indicator>        (step 745)    -   or    -   <base_prefix>:<remote_node_id>:<local_node_id>:<remote_link_id>:<indicator>        (step 746).

For instance, the IPv6 base prefix is FD04::/16. The local and remotenode identifiers are 48 bits MAC addresses. The local and remote linkidentifiers are 15 bits identifiers consisting of the respective portnumbers. The indicator is a one bit Boolean. The link IPv6 addressgenerated by the method 700 has one of the following formats:

-   -   FD04:<local_MAC_address>:<remote_MAC_address>:<local_port_nb>:0        (step 745)    -   or    -   FD04:<remote_MAC_address>:<local_MAC_address>:<remote_port_nb>:1        (step 746).

In an exemplary implementation of the method 700, the generated linkIPv6 address is a unique local address (ULA) compliant with Request forComments (RFC) 4193 of the Internet Engineering Task Force (IETF).

The generation of the IPv6 link address at steps 745 and 746 may combineadditional item(s) to those already described at step 745 and 746, aslong as the generated IPv6 link address has 128 bits. For example, ifshorter local and remote node identifiers are used, the IPv6 linkaddress generate at step 745 may include the remote link identifier(e.g.<base_prefix>:<local_node_id>:<remote_node_id>:<local_link_id>:<remote_link_id>:<indicator>) and the IPv6 link address generate at step 746 mayinclude the local link identifier (e.g.<base_prefix>:<remote_node_id>:<local_node_id>:<remote_link_id>:<local_link_id>:<indicator>).

Steps 730, 735, 740, 745 or 746, and 750 of the method 700 may berepeated several times, using the information stored in theconfiguration file 521. By contrast, steps 705 to 725 only need to beperformed once, for generating and storing in the configuration 521 thedata required by steps 730 to 750 (IPv6 base prefix, local nodeidentifier and local link identifier). For instance, steps 730 to 750are repeated at each boot of the computing device 500; and steps 705 to735 are only performed at the first boot of the computing device 500.

A software-based mechanism can be implemented for triggering thecomputing device 500 to perform steps 730 to 750 at any time. Thesoftware-based mechanism may be implemented via a user interface of thecomputing device 500, via a control message received by the computingdevice 500, etc. For example, if the communication interface 530 of thecomputing device 500 which has been previously configured with themethod 700 is physically or functionally connected to a newcommunication interface of the remote computing device 40 (or to acommunication interface of a new remote computing device 40), then thesoftware-based mechanism shall be invoked for triggering the executionof steps 730 to 750.

Reference is now made concurrently to FIGS. 7B, 8A and 8B, where FIGS.8A and 8B illustrate exemplary link IPv6 addresses generated by steps745 and 746 of the method 700.

The spine switch 100 and leaf switch 200 of FIGS. 8A and 8B respectivelycorrespond to the computing device 500 and remote computing device 40 ofFIGS. 7A and 7B. The spine switch 100 includes a port 102 connected(e.g. via an Ethernet cable) to a port 201 of the leaf switch 200. Alocal node identifier (local_node_id) and a local link identifier(local_link_id) are associated to port 102. Similarly, a remote nodeidentifier (remote_node_id) and a remote link identifier(remote_link_id) are associated to port 201.

As illustrated in FIG. 8A, if the local node identifier is greater thanthe remote node identifier, the link IPv6 address generated at step 745for port 102 is as follows:

-   -   <base_prefix>:<local_node_id>:<remote_node_id>:<local_link_id>:<0>.

Applying the method 700 to generate a link IPv6 address for port 201,the link IPv6 address generated at step 746 for port 201 is as follows:

-   -   <base_prefix>:<local_node_id>:<remote_node_id>:<local_link_id>:<1>.

As illustrated in FIG. 8B, if the local node identifier is lower thanthe remote node identifier, the link IPv6 address generated at step 746for port 102 is as follows:

-   -   <base_prefix>:<remote_node_id>:<local_node_id>:<remote_link_id>:<1>.

Applying the method 700 to generate a link IPv6 address for port 201,the link IPv6 address generated at step 745 for port 201 is as follows:

-   -   <base_prefix>:<remote_node_id>:<local_node_id>:<remote_link_id>:<0>.

It should be noted that after executing the method 700, the spine switch100 is capable of determining the corresponding link IPv6 addressallocated to port 201 of the leaf switch 200 (when leaf switch 200executes the method 700). More specifically, if the link IPv6 addressallocated to port 102 is generated by performing step 745, then thecorresponding link IPv6 address allocated to port 201 is determined byperforming step 745 with an adapted value for the indicator (e.g. thevalue of the indicator is changed from 0 to 1 or 1 to 0). Similarly, ifthe link IPv6 address allocated to port 102 is generated by performingstep 746, then the corresponding link IPv6 address allocated to port 201is determined by performing step 746 with an adapted value for theindicator (e.g. the value of the indicator is changed from 0 to 1 or 1to 0). The same property applies to the leaf switch 200 executing themethod 700 and being capable of determining the corresponding link IPv6address allocated to port 102 of the spine switch 100.

Reference is now made concurrently to FIGS. 3, 7B, 8A and 8B. FIGS. 8Aand 8B are for illustration purposes only; and could be readily adaptedto illustrate exemplary link IPv6 addresses generated by steps 745 and746 of the method 700 in other configurations. The other configurationsinclude the connection of a port of a spine switch 100 with a port of acontroller 400, the connection of a port of a leaf switch 100 with aport of a controller 400, the connection of a port of a spine switch 100with a port of another spine switch 100, and the connection of a port ofa leaf switch 100 with a port of another leaf switch 100.

As mentioned previously with reference to FIG. 3 , port 102 is notnecessarily physically connected to port 201 (e.g. via an Ethernetcable). For example, an intermediate equipment not represented in theFigures (e.g. an intermediate switch) is used for functionallyconnecting port 102 to port 201. In this configuration, port 102 isdirectly physically connected to one port of the intermediate(switching) equipment, and port 201 is directly physically connected toanother port of the intermediate (switching) equipment. In this case,several link IPv6 addresses may be generated and configured by themethod 700 for port 102 of the switch spine 100. Each link IPv6 addresscorresponds to a functional link to a port of another equipment (havinga remote node id and a remote link id). All the functional links aresupported by the physical link between port 102 and the intermediateequipment.

The terminology port is used since most of the equipment of the fabrichave communication interfaces in the form of ports (e.g. Ethernetelectrical port, optical port, etc.). However, FIGS. 8A and 8B can begeneralized to any type of communication interface, as long as thecommunication interface to which steps 745 and 746 of the method 700 isapplied has been allocated a local node identifier and a local linkidentifier.

Secure Neighbor Discovery

Referring now concurrently to FIGS. 3, 5, 9A, 9B, 9C and 9D, a method800 for performing secure neighbor discovery for one of thecommunication interfaces 530 of the computing device 500 is illustratedin FIGS. 9A to 9D. Some of the steps of the method 800 are performed bythe computing device 500 represented in FIG. 5 . Some of the steps ofthe method 800 are performed by a remote computing device 40 which issecurely discovered by the present method 800.

A dedicated computer program has instructions for implementing the stepsof the method 800 executed on the computing device 500. The instructionsare comprised in a non-transitory computer program product (e.g. thememory 520) of the computing device 500. The instructions, when executedby the processing unit 510 of the computing device 500, provide forperforming a secure neighbor discovery. The instructions are deliverableto the computing device 500 via an electronically-readable media such asa storage media (e.g. CD-ROM, USB key, etc.), or via communication links(e.g. via a communication network through one of the communicationinterfaces 530).

The remote computing device 40 is similar to the computing device 500represented in FIG. 5 . The remote computing device 40 comprises aprocessing unit, memory and at least one communication interface.

A dedicated computer program has instructions for implementing the stepsof the method 800 executed on the remote computing device 40. Theinstructions are comprised in a non-transitory computer program product(e.g. the memory) of the remote computing device 40. The instructions,when executed by the processing unit of the remote computing device 40,provide for performing a secure neighbor discovery. The instructions aredeliverable to the remote computing device 40 via anelectronically-readable media such as a storage media (e.g. CD-ROM, USBkey, etc.), or via communication links (e.g. via a communication networkthrough one of the communication interfaces of the remote computingdevice 40).

The communication interface 530 of the computing device 500 for whichthe secure discovery is performed is connected to a communicationinterface of the remote computing device 40. The connection (e.g.physical connection via an Ethernet cable) establishes a communicationlink between the computing device 500 and the remote computing device40.

The method 800 is based on node identifiers and challenges. The nodeidentifier and challenges associated to the communication interface 530of the computing device 500 will be referred to as the local nodeidentifier and the local challenges. The node identifier and thechallenges associated to the communication interface of the remotecomputing device 40 will be referred to as the remote node identifierand the remote challenges.

The method 800 comprises the step 805 of determining a local nodeidentifier for the communication interface 530 of the computing device500. Step 805 is executed by the processing unit 510 of the computingdevice 500.

The determination of the local node identifier has been previouslydescribed in relation to the method 700 represented in FIG. 7A. In anexemplary implementation, the local node identifier is the MAC addressof the communication interface 530 of the computing device 500 for whichthe secure neighbor discovery is performed. Alternatively, the localnode identifier is the MAC address of another communication interface530 of the computing device 500. In another exemplary implementation,the local node identifier is determined by calculating a hash of a 128bits Universal Unique Identifier (UUID) of the computing device 500.

The method 800 comprises the step 810 of generating a local challenge.Step 810 is executed by the processing unit 510 of the computing device500. The generation of the challenges used by the method 800 will bedetailed later in the description.

The method 800 comprises the step 815 of encrypting the local nodeidentifier into an encrypted local node identifier. Step 815 is executedby the processing unit 510 of the computing device 500. Theencryption/decryption means used by the method 800 will be detailedlater in the description.

The method 800 comprises the step 820 of encrypting the local challengeinto an encrypted local challenge. Step 820 is executed by theprocessing unit 510 of the computing device 500.

The method 800 comprises the step 825 of transmitting via thecommunication interface 530 a discovery request message comprising theencrypted local node identifier and the encrypted local challenge. Step825 is executed by the processing unit 510 of the computing device 500.The messages exchanged between the computing device 500 and the remotecomputing device 40 when performing the method 800 will be detailedlater in the description.

The method 800 comprises the step 830 of receiving via the communicationinterface of the remote computing device 40 the discovery requestmessage. Step 830 is executed by the processing unit of the remotecomputing device 40.

The method 800 comprises the step 835 of decrypting the encrypted localnode identifier into the local node identifier. Step 835 is executed bythe processing unit of the remote computing device 40.

The method 800 comprises the step 840 of decrypting the encrypted localchallenge into the local challenge. Step 840 is executed by theprocessing unit of the remote computing device 40.

The method 800 comprises the step 845 of generating a local challengeresponse based at least on the local challenge received at step 830 inan encrypted form. Step 845 is executed by the processing unit of theremote computing device 40. The generation of the challenge responsesused by the method 800 will be detailed later in the description.

The method 800 comprises the step 850 of determining a remote nodeidentifier for the communication interface of the remote computingdevice 40. Step 850 is executed by the processing unit of the remotecomputing device 40. The determination of the remote node identifier issimilar to the determination of the local node identifier at step 805.

The method 800 comprises the step 855 of encrypting the remote nodeidentifier into an encrypted remote node identifier. Step 885 isexecuted by the processing unit of the remote computing device 40.

The method 800 comprises the step 860 of encrypting the local challengeresponse into an encrypted local challenge response. Step 860 isexecuted by the processing unit of the remote computing device 40.

The method 800 comprises the step 865 of generating a remote challenge.Step 865 is executed by the processing unit of the remote computingdevice 40.

The method 800 comprises the step 870 of encrypting the remote challengeinto an encrypted remote challenge. Step 870 is executed by theprocessing unit of the remote computing device 40.

The method 800 comprises the step 875 of transmitting to the computingdevice 500 via the communication interface of the remote computingdevice 40 a discovery response message. The discovery response messagecomprises the encrypted remote node identifier, the encrypted localchallenge response and the encrypted remote challenge. Step 875 isexecuted by the processing unit of the remote computing device 40.

The method 800 comprises the step 880 of receiving from the remotecomputing device 40 via the communication interface 530 of the computingdevice 500 the discovery response message. Step 880 is executed by theprocessing unit 510 of the computing device 500.

Steps 865 and 870 are optional. Thus, in a first implementation, thediscovery response message comprises the encrypted remote nodeidentifier, the encrypted local challenge response and the encryptedremote challenge. In another implementation, the discovery responsemessage only comprises the encrypted remote node identifier and theencrypted local challenge response.

The method 800 comprises the step 885 of decrypting the encrypted localchallenge response into the local challenge response. Step 885 isexecuted by the processing unit 510 of the computing device 500.

The method 800 comprises the step 890 of generating an expected localchallenge response based at least on the local challenge. Step 890 isexecuted by the processing unit 510 of the computing device 500. Thegeneration of the expected local challenge response shall be based onthe same mechanism as the generation of the local challenge response atstep 845.

The method 800 comprises the step 895 of determining that the localchallenge response (received in an encrypted form at step 880)corresponds to the expected local challenge response (generated at step890). Step 895 is executed by the processing unit 510 of the computingdevice 500.

If the local challenge response (received in an encrypted form at step880) matches the expected local challenge response (generated at step890), the secure discovery of the remote computing device 40 by thecomputing device 500 is a success. The remote computing device 40 isconsidered by the computing device 500 to be a legit device, having theproper credentials for successfully passing the secure discoveryprocedure.

If the local challenge response (received in an encrypted form at step880) does not match the expected local challenge response (generated atstep 890), the secure discovery of the remote computing device 40 by thecomputing device 500 is a failure. The remote computing device 40 isconsidered by the computing device 500 to be a rogue device, since itdoes not possess the proper credentials for successfully passing thesecure discovery procedure.

The following steps of the method 800 are only performed if the securediscovery of the remote computing device 40 is a success.

The method 800 comprises the step 900 of decrypting the encrypted remotenode identifier into the remote node identifier. Step 900 is executed bythe processing unit 510 of the computing device 500.

The following steps of the method 800 are optional. The following stepsare only performed if the discovery response message received at step880 comprises the encrypted remote challenge.

The method 800 comprises the step 905 of decrypting the encrypted remotechallenge into the remote challenge. Step 905 is executed by theprocessing unit 510 of the computing device 500.

The method 800 comprises the step 910 of generating a remote challengeresponse based at least on the remote challenge received at step 880 inan encrypted form. Step 910 is executed by the processing unit 510 ofthe computing device 500.

The method 800 comprises the step 915 of encrypting the remote challengeresponse into an encrypted remote challenge response. Step 915 isexecuted by the processing unit 510 of the computing device 500.

The method 800 comprises the step 920 of transmitting via thecommunication interface 530 a discovery acknowledgement messagecomprising the encrypted remote challenge response. Step 920 is executedby the processing unit 510 of the computing device 500.

The method 800 comprises the step 925 of receiving via the communicationinterface of the remote computing device 40 the discoveryacknowledgement message. Step 925 is executed by the processing unit ofthe remote computing device 40.

The method 800 comprises the step 930 of decrypting the encrypted remotechallenge response into the remote challenge response. Step 925 isexecuted by the processing unit of the remote computing device 40.

The method 800 comprises the step 935 of generating an expected remotechallenge response based at least on the remote challenge. Step 935 isexecuted by the processing unit of the remote computing device 40. Thegeneration of the expected remote challenge response shall be based onthe same mechanism as the generation of the remote challenge response atstep 910.

The method 800 comprises the step 940 of determining that the remotechallenge response (received in an encrypted form at step 925)corresponds to the expected remote challenge response (generated at step935). Step 940 is executed by the processing unit of the remotecomputing device 40.

If the remote challenge response (received in an encrypted form at step925) matches the expected remote challenge response (generated at step935), the secure discovery of the computing device 500 by the remotecomputing device 40 is a success. The computing device 500 is consideredby the remote computing device 40 to be a legit device, having theproper credentials for successfully passing the secure discoveryprocedure.

If the remote challenge response (received in an encrypted form at step925) does not match the expected remote challenge response (generated atstep 935), the secure discovery of the computing device 500 by theremote computing device 40 is a failure. The computing device 500 isconsidered by the remote computing device 40 to be a rogue device, sinceit does not possess the proper credentials for successfully passing thesecure discovery procedure.

Various encryption/decryption methods well known in the art can be usedfor encrypting/decrypting the node identifiers and the challenges. Forexample, a shared key is used by the computing device 500 and the remotecomputing device 40. As is well known in the art, the shared key is usedboth for the encryption and decryption operations. The shared key iscomprised in the configuration file 521 stored in the memory 520 of thecomputing device 500. The remote computing device 50 has a similarconfiguration file stored in its memory and comprising the shared key.As illustrated in FIG. 6 (step 605 of the method 600), the shared key istransferred from a configuration device 30 to the computing device 500(and remote computing device 40) for storage in the configuration file521. The same shared key is used for all encryption/decryptionoperations. Alternatively, different share keys are used. For instance,a first shared key is used for encrypting/decrypting the nodeidentifiers, and a second shared key is used for encrypting/decryptingthe challenges. Instead of a shared key, pairs of public/private keyscan be used. However, the deployment of pairs of public/private keys forsecuring transactions between a plurality of nodes is more complex. Thecomputing device 500 needs to store its own private key for encryptingdata (local node identifier, local challenge, etc.) sent to the remotecomputing device 40. The computing device 500 also needs to store thepublic key of the remote computing device 40 for decrypting data (remotenode identifier, local challenge response, etc.) received from theremote computing device 40. Similarly, the remote computing device 40needs to store its own private key for encrypting data (remote nodeidentifier, local challenge response, etc.) sent to the computing device500. The remote computing device 40 also needs to store the public keyof the computing device 500 for decrypting data (local node identifier,local challenge, etc.) received from the computing device 500. Thepreviously described encryption/decryption methods are for illustrationpurposes only. Other methods could be used.

Various methods can be used for generating the challenges and responsesto challenges. In a first exemplary implementation, the local and remotechallenges are random numbers generated by a random number generator. Ina second exemplary implementation, the local and remote challenges aregenerated by a mathematical function taking as inputs one or more seeds.Examples of seeds include the current time, a characteristic of thecomputing device 500 (or remote computing device 40), etc. In a thirdexemplary implementation, the local and remote challenges are selectedamong a pre-defined list of values stored in the configuration file 521.The selection may be random, sequential, etc.

With respect to the local challenge response and the expected localchallenge response, they need to be generated based on the localchallenge for securing the discovery process. More specifically, thisensures that the remote computing device 40 is legit, since it was ableto decrypt the received encrypted local challenge with the properencryption material, to generate the local challenge response using thelocal challenge in the generation process, and to encrypt the localchallenge response with the proper encryption material. In a firstexemplary implementation, the local challenge response is generated by amathematical function taking the local challenge as a seed. Additionalseed(s) can also be used in addition to the local challenge (e.g. thelocal node identifier and/or the remote node identifier). In a secondexemplary implementation, the local challenge response is selected amonga pre-defined list of values stored in the configuration file 521. Thisonly works if the local challenge was also selected among a pre-definedlist of values stored in the configuration file 521. Each pre-definedvalue of the local challenge is associated to a correspondingpre-defined value of the local challenge response. Upon reception of oneof the pre-defined values of the local challenge, the correspondingpre-defined value is selected for the local challenge response. The samemechanisms are implemented for the remote challenge response and theexpected remote challenge response. The previously described methods forgenerating the challenges and responses to challenges are forillustration purposes only. Other methods could be used.

Various protocols can be used for implementing the discovery, discoveryresponse and discovery acknowledgement messages. For example, the LinkLayer Discovery Protocol (LLDP) specified in Institute of Electrical andElectronics Engineers (IEEE) 802.1AB and IEEE 802.3-2012 section 6clause 79 is used. An LLDP frame comprises mandatory Type-Length-Values(TLVs) and zero or more optional TLV. The data (e.g. encrypted nodeidentifiers, encrypted challenges, etc.) exchanged by the method 800between the computing device 500 and the computing device 40 aretransported in existing optional TLVs if applicable. Alternatively, newdedicated optional TLV(s) are defined for implementing the method 800.Since there is no notion of request, response and acknowledgement inLLDP, each one of the discovery, discovery response and discoveryacknowledgement messages is implemented by a unidirectional LLDPmessage.

The previously described protocol for implementing the discovery,discovery response and discovery acknowledgement messages is forillustration purposes only. Other standardized (or proprietary)protocols could be used. In particular, a protocol which supports thenotion of request, response and acknowledgement could be used.

The discovery request message is transmitted in a multicast or broadcastmode, at the layer 2 (e.g. data link layer based on Ethernet) or layer 3(e.g. network layer based on IP) of the Open Systems Interconnection(OSI) model. For example, if LLDP is used, the destination MAC addressis a multicast MAC address. Since the computing device 500 does not knowthe neighbor(s) to be discovered (remote computing device(s) 40), itdoes not know their destination MAC (or IP) address. Thus, a multicastor broadcast destination address is used to reach the neighbor(s) viathe discovery request message. The discovery response and discoveryacknowledgement messages are also transmitted in a multicast orbroadcast mode. Alternatively, unicast destination addresses are used:the source address of the discovery request message is used as thedestination address of the discovery response message and the sourceaddress of the discovery response message is used as the destinationaddress of the discovery acknowledgement message.

The secure discovery procedure supported by the method 800 may beimplemented in different ways. In a first implementation, a mutualsecure discovery of the computing device 500 and remote computing device40 is performed by executing all the steps of the method 800. Thecomputing device 500 securely advertises its node identifier (andoptionally link identifier) to the remote computing device 40. Inreturn, the remote computing device 40 securely advertises its nodeidentifier (and optionally link identifier) to the computing device 500.

In a second implementation, no mutual secure discovery is performed, butrather two independent secure discoveries. The computing device 500 andthe remote computing device 40 only execute steps 810, 820, 825, 830,840 to 861, 875 and 880 to 901 of the method 800, for performing thesecure discovery of the remote computing device 40 by the computingdevice 500. The same procedure is used by the remote computing device 40for discovering the computing device 500.

Additional data may be exchanged (in plain or encrypted form) betweenthe computing device 500 and the remote computing device 40 during thesecure discovery procedure. For example, in addition to the local nodeidentifier, the computing device 500 determines a local link identifier.The local link identifier is transmitted to the remote computing device40 in an encrypted or plain form, via the discovery request message (oralternatively via the discovery acknowledgement message). Similarly, inaddition to the remote node identifier, the remote computing device 40determines a remote link identifier. The remote link identifier istransmitted to the computing device 500 in an encrypted or plain form,via the discovery response message.

FIG. 9A represents the optional steps 806 of determining the local linkidentifier and 816 of encrypting the local link identifier. In thiscase, although not represented in FIG. 9A for simplification purposes,the discovery request message of steps 825 and 830 further comprises theencrypted local link identifier.

FIG. 9B represents the optional steps 836 of decrypting the local linkidentifier, 851 of determining the remote link identifier and 861 ofencrypting remote local link identifier.

FIG. 9C represents the optional steps 901 of decrypting the remote linkidentifier. Although not represented in FIG. 9C for simplificationpurposes, the discovery response message of steps 875 and 880 furthercomprises the encrypted remote link identifier.

The determination of the local link identifier has been previouslydescribed in relation to the method 700 represented in FIG. 7A. In anexemplary implementation, the local link identifier is a 15 bits integerin hexadecimal format associated to the communication interface 530 ofthe computing device 500 for which the secure neighbor discovery isperformed. In the case of a spine switch 100 or a leaf switch 200, eachport of the switch is allocated a unique integer in the range 1 to N,where N is the number of ports of the switch. The unique integerallocated to a given port is used for the local link identifier. Thedetermination of the remote link identifier is similar to thedetermination of the local link identifier.

Alternatively, the computing device 500 and the remote computing device40 do not respectively determine and transmit (in encrypted form) thelocal and remote node identifiers. Instead, other data are generated atthe local computing device 500 and/or remote computing device 40. Theother data are transmitted in plain or encrypted form, via one of thediscovery request message, discovery response message or the discoveryacknowledgement message.

In an alternative implementation (not represented in the Figures forsimplification purposes), at least some of the steps 815, 816 and 820are combined. For example, a combination of the local node identifierand the local challenge is encrypted; or a combination of the local nodeidentifier, the local link identifier and the local challenge isencrypted.

Similarly, at least some of the steps 835, 836 and 840 are combined. Forexample, an encrypted combination of the local node identifier and thelocal challenge is decrypted into the local node identifier and thelocal challenge; or an encrypted combination of the local nodeidentifier, the local link identifier and the local challenge isdecrypted into the local node identifier, the local link identifier andthe local challenge.

Similarly, at least some of the steps 855, 860, 861 and 870 arecombined. For example, a combination of the remote node identifier, thelocal challenge response and the remote challenge is encrypted; or acombination of the remote node identifier, the remote link identifier,the local challenge response and the remote challenge is encrypted.

Reference is now made concurrently to FIGS. 9A-D and 10, where FIG. 10illustrates the neighbor discovery procedure supported by the method800.

The spine switch 100 and leaf switch 200 of FIG. 10 respectivelycorrespond to the computing device 500 and remote computing device 40 ofFIGS. 9A-D. The spine switch 100 includes a port 102 connected (e.g. viaan Ethernet cable) to a port 201 of the leaf switch 200. A local nodeidentifier (local_node_id) and a local link identifier (local_link_id)are associated to port 102. Similarly, a remote node identifier(remote_node_id) and a remote link identifier (remote_link_id) areassociated to port 201. Furthermore, the spine 100 generates the localchallenge, the expected local challenge response and the remotechallenge response; while the leaf 200 generates the local challengeresponse, the remote challenge and the expected remote challengeresponse. The discovery request, discovery response and discoveryacknowledgement messages exchanged between the spine 100 and the leaf200 are further represented.

Network Configuration Including the Generation of a Fabric-Wide IPV6Address, the Secure Neighbor Discovery and the Generation of One or MoreLink IPv6 Address

Referring now concurrently to FIGS. 3, 5, 6, 7A-B, 9A-D and 11A, 11B and11C, a method 1000 for performing a network configuration of thecomputing device 500 is illustrated in FIGS. 11A, 11B and 11C. At leastsome of the steps of the method 1000 are performed by the computingdevice 500 represented in FIG. 5 .

The network configuration includes the generation of a fabric-wide IPv6address described in the method 600 illustrated in FIG. 6 . The networkconfiguration also includes the secure neighbor discovery described inthe method 800 illustrated in FIGS. 9A, 9B, 9C and 9D. The networkconfiguration further includes the generation of the link IPv6 addressdescribed in the method 700 illustrated in FIGS. 7A and 7B. The neighbordiscovery procedure allows the secure discovery of the remote nodeidentifier and the remote link identifier of the remote computing device40, which are used for the generation of the link IPv6 address. Theneighbor discovery procedure also allows the secure transmission of thelocal node identifier and the local link identifier to the remotecomputing device 40, which are used for the generation of acorresponding link IPv6 address at the remote computing device 40.

Several communication interfaces 530 of the computing device 500 can beconfigured with a link IPv6 address through the secure neighbordiscovery procedure by repeating the steps of the methods 800 and 700for each communication interface 530.

A dedicated computer program has instructions for implementing at leastsome of the steps of the method 1000. The instructions are comprised ina non-transitory computer program product (e.g. the memory 520) of thecomputing device 500. The instructions, when executed by the processingunit 510 of the computing device 500, provide for performing a networkconfiguration of the computing device 500. The instructions aredeliverable to the computing device 500 via an electronically-readablemedia such as a storage media (e.g. CD-ROM, USB key, etc.), or viacommunication links (e.g. via a communication network through one of thecommunication interfaces 530).

The method 1000 comprises the step 1005 of transmitting configurationdata by the configuration device 30 to the computing device 500. Step1005 corresponds to step 605 of the method 600 and step 705 of themethod 700.

The method 1000 comprises the step 1010 of receiving the configurationdata by the computing device 500. The configuration data are receivedvia one of the communication interfaces 530 of the computing device 500.Step 1010 corresponds to step 610 of the method 600 and step 710 of themethod 700.

The method 1000 comprises the step 1015 of storing the configurationdata in the configuration file 521. Step 1015 corresponds to step 615 ofthe method 600 and step 715 of the method 700. The configuration datacomprise a first IPv6 base prefix, a fabric identifier, and a secondIPv6 base prefix.

The method 1000 comprises the step 1020 of determining a host identifierand optionally storing the host identifier in the configuration file521. Step 1020 corresponds to step 620 of the method 600.

The method 1000 comprises the step 1025 of generating a fabric-wide IPv6prefix by combining the first IPv6 base prefix stored in theconfiguration file 521 and the fabric identifier stored in theconfiguration file 521. Step 1025 corresponds to step 625 of the method600.

The method 1000 comprises the step 1030 of generating a fabric-wide IPv6address by combining the fabric-wide IPv6 prefix (generated at step1025) and the host identifier (determined at step 1020). Step 1030corresponds to step 630 of the method 600.

The method 1000 comprises the step 1035 of advertising the fabric-wideIPv6 address generated at step 1030. Step 1035 corresponds to step 635of the method 600.

The method 1000 comprises the step 1040 of determining a local nodeidentifier of the computing device 500; and optionally storing the localnode identifier in the configuration file 521. Step 1040 corresponds tostep 720 of the method 700.

In a particular implementation of the method 1000, the local nodeidentifier consists of the host identifier determined at step 1020.

The method 1000 comprises the step 1045 of determining a local linkidentifier of the communication interface 530 (corresponding to thelocal node identifier and local link identifier) of the computing device500; and optionally storing the local link identifier in theconfiguration file 521. Step 1045 corresponds to step 725 of the method700.

The method 1000 comprises the step 1050 of performing a secure neighbordiscovery procedure to discover a remote node identifier and a remotelink identifier of the remote computing device 40. Step 1050 includes atleast all the steps of the method 800 allowing the computing device 500to perform the secure discovery of the remote node identifier and theremote link identifier of the remote computing device 40. These stepshave not been detailed in FIGS. 11A-C for simplification purposes.

The method 1000 comprises the step 1060 of comparing the local nodeidentifier and the remote node identifier. Step 1060 corresponds to step740 of the method 700.

If the local node identifier is greater than the remote node identifier,the method 1000 performs step 1065 of generating the link IPv6 addressby combining the second IPv6 base prefix stored in the configurationfile 521, the local node identifier, the remote node identifier, thelocal link identifier and an indicator that the local node identifier isgreater than the remote node identifier. Step 1065 corresponds to step745 of the method 700.

If the local node identifier is lower than the remote node identifier,the method 1000 performs step 1066 of generating the link IPv6 addressby combining the second IPv6 base prefix stored in the configurationfile 521, the remote node identifier, the local node identifier, theremote link identifier and an indicator that the local node identifieris lower than the remote node identifier. Step 1066 corresponds to step746 of the method 700.

In an alternative implementation (already mentioned previously), step1065 is performed if the local node identifier is lower than the remotenode identifier; and step 1066 is performed if the local node identifieris greater than the remote node identifier. This alternativeimplementation is not represented in the Figures.

The method 1000 comprises the step 1070 of configuring the communicationinterface 530 (corresponding to the local node identifier and local linkidentifier) with the link IPv6 address generated at step 865 or 866.Step 1070 corresponds to step 750 of the method 700.

If step 1050 further includes at least all the steps of the method 800allowing the remote computing device 40 to securely discover the localnode identifier and the local link identifier of the computing device500, then a corresponding link IPv6 address can be generated for thecorresponding communication interface of the remote computing device 40.The generation of the corresponding link IPv6 address of the remotecomputing device 40 is based on the same algorithm used for thegeneration of the link IPv6 address of the computing device 500. Thegeneration of the corresponding link IPv6 address has been previouslydescribed and illustrated in FIGS. 8A and 8B.

Several communication interfaces 530 of the computing device 500 can beconfigured with a link IPv6 address by repeating steps 1040 to 1070 ofthe method 1000 for each communication interface 530.

All the details and specificities of the respective steps of the methods600, 700 and 800 (which have been previously addressed when describingthe methods 600, 700 and 800) also apply to the corresponding steps ofthe method 1000. Such details and specificities have not been repeatedwhen describing the method 1000 for simplification purposes.

Although the present disclosure has been described hereinabove by way ofnon-restrictive, illustrative embodiments thereof, these embodiments maybe modified at will within the scope of the appended claims withoutdeparting from the spirit and nature of the present disclosure.

What is claimed is:
 1. A method for performing a secure discovery, themethod comprising: determining by a processing unit of a computingdevice a local node identifier for a communication interface of thecomputing device; generating by the processing unit of the computingdevice a local challenge; encrypting by the processing unit of thecomputing device the local node identifier of the communicationinterface into an encrypted local node identifier of the communicationinterface; encrypting by the processing unit of the computing device thelocal challenge into an encrypted local challenge; transmitting by theprocessing unit of the computing device via the communication interfaceof the computing device a discovery request message comprising theencrypted local node identifier of the communication interface and theencrypted local challenge; receiving by the processing unit of thecomputing device from a remote computing device via the communicationinterface of the computing device a discovery response message inresponse to the discovery request message, the discovery responsemessage comprising an encrypted remote node identifier of a remotecommunication interface of the remote computing device and an encryptedlocal challenge response; decrypting by the processing unit of thecomputing device the encrypted local challenge response into a localchallenge response; generating by the processing unit of the computingdevice an expected local challenge response based at least on the localchallenge; determining by the processing unit of the computing devicewhether the local challenge response corresponds to the expected localchallenge response and the secure discovery is successful or whether thelocal challenge response does not correspond to the expected localchallenge response and the secure discovery is a failure; and when thesecure discovery is successful, decrypting by the processing unit of thecomputing device the encrypted remote node identifier of the remotecommunication interface of the remote computing device into a remotenode identifier of the remote communication interface of the remotecomputing device.
 2. The method of claim 1, wherein the discoveryresponse message further comprises an encrypted remote challenge, andwhen the secure discovery is successful, the method further comprises:decrypting by the processing unit of the computing device the encryptedremote challenge into a remote challenge; generating by the processingunit of the computing device a remote challenge response based at leaston the remote challenge; encrypting by the processing unit of thecomputing device the remote challenge response into an encrypted remotechallenge response; and transmitting by the processing unit of thecomputing device to the remote computing device via the communicationinterface of the computing device a discovery acknowledgment messagecomprising the encrypted remote challenge response.
 3. The method ofclaim 1, wherein a shared key is used for encrypting the local nodeidentifier and the local challenge, and for decrypting the encryptedlocal challenge response and the encrypted remote node identifier. 4.The method of claim 1, wherein the discovery request message ismulticasted or broadcasted.
 5. The method of claim 1, wherein thediscovery request message is compliant with the Link Layer DiscoveryProtocol (LLDP).
 6. The method of claim 1, further comprisingdetermining by the processing unit of the computing device a local linkidentifier for the communication interface of the computing device; andwherein the discovery request message comprises the local linkidentifier of the communication interface of the computing device, andthe discovery response message comprises a remote link identifier of theremote communication interface of the remote computing device.
 7. Themethod of claim 1, wherein the local node identifier is a Media AccessControl (MAC) address.
 8. The method of claim 1, wherein the processingunit determines the local node identifier by calculating a hash of a 128bits Universal Unique Identifier (UUID) of the computing device.
 9. Amethod for performing a secure discovery, the method comprising:determining by a processing unit of a computing device a local nodeidentifier for a communication interface of the computing device;generating by the processing unit of the computing device a localchallenge; encrypting by the processing unit of the computing device acombination of the local node identifier of the communication interfaceof the computing device and the local challenge into an encryptedcombination of the local node identifier of the communication interfaceof the computing device and the local challenge; transmitting by theprocessing unit of the computing device via the communication interfaceof the computing device a discovery request message comprising theencrypted combination of the local node identifier of the communicationinterface of the computing device and the local challenge; receiving bythe processing unit of the computing device from a remote computingdevice via the communication interface of the computing device adiscovery response message in response to the discovery request message,the discovery response message comprising an encrypted combination of aremote node identifier of a remote communication interface of the remotecomputing device and a local challenge response; decrypting by theprocessing unit of the computing device the encrypted combination of theremote node identifier of the remote communication interface of theremote computing device and the local challenge response into the remotenode identifier of the remote communication interface of the remotecomputing device and the local challenge response; generating by theprocessing unit of the computing device an expected local challengeresponse based at least on the local challenge; and determining by theprocessing unit of the computing device whether the local challengeresponse corresponds to the expected local challenge response and thesecure discovery is successful or whether the local challenge responsedoes not correspond to the expected local challenge response and thesecure discovery is a failure.
 10. The method of claim 9, wherein thediscovery response message further comprises an encrypted remotechallenge, and when the secure discovery is successful, the methodfurther comprises: decrypting by the processing unit of the computingdevice the encrypted remote challenge into a remote challenge;generating by the processing unit of the computing device a remotechallenge response based at least on the remote challenge; encrypting bythe processing unit of the computing device the remote challengeresponse into an encrypted remote challenge response; and transmittingby the processing unit of the computing device to the remote computingdevice via the communication interface of the computing device adiscovery acknowledgment message comprising the encrypted remotechallenge response.
 11. The method of claim 9, wherein a shared key isused for encrypting the combination of the local node identifier and thelocal challenge, and for decrypting the encrypted combination of theremote node identifier and the local challenge response.
 12. The methodof claim 9, wherein the discovery request message is multicasted orbroadcasted.
 13. The method of claim 9, wherein the discovery requestmessage is compliant with the Link Layer Discovery Protocol (LLDP). 14.The method of claim 9, further comprising determining by the processingunit of the computing device a local link identifier for thecommunication interface of the computing device; and wherein thediscovery request message comprises the local link identifier of thecommunication interface of the computing device, and the discoveryresponse message comprises a remote link identifier of the remotecommunication interface of the remote computing device.
 15. The methodof claim 9, wherein the local node identifier is a Media Access Control(MAC) address.
 16. The method of claim 9, wherein the processing unitdetermines the local node identifier by calculating a hash of a 128 bitsUniversal Unique Identifier (UUID) of the computing device.